#!/bin/bash
set -e  # 出错时终止脚本

# 解压redis-plus-plus源码包（对应Windows的Expand-Archive）
if [ ! -d "redis-plus-plus-master" ]; then
    echo "解压redis-plus-plus-master.zip..."
    if [ -f "redis-plus-plus-master.zip" ]; then
        unzip -q redis-plus-plus-master.zip  # 静默解压，不输出详细信息
        echo "解压完成"
    else
        echo "错误：未找到redis-plus-plus-master.zip文件"
        exit 1
    fi
fi

# 进入源码目录
cd redis-plus-plus-master || {
    echo "错误：redis-plus-plus-master目录不存在"
    exit 1
}

# 创建输出目录（与Windows保持一致的目录结构）
mkdir -p ../lib
mkdir -p ../lib/linux
mkdir -p ../lib/linux/Debug
mkdir -p ../lib/linux/Release
mkdir -p ../include
mkdir -p ../include/sw

# 清理旧头文件（确保获取最新版本）
# rm -rf ../include/sw/*

# 编译linux Debug版本
echo "编译linux Debug版本..."
mkdir -p build_linux_d
cd build_linux_d
# rm -rf *
cmake -DCMAKE_BUILD_TYPE=Debug -DREDIS_PLUS_PLUS_BUILD_TEST=OFF -DREDIS_PLUS_PLUS_BUILD_SHARED=ON -DCMAKE_INSTALL_PREFIX="./dist" -DHIREDIS_LIB=../../lib/linux/Debug/libhiredisd.so -DHIREDIS_HEADER=../../include ..
make -j$(nproc)  # 多线程编译
make install

# 复制编译产物到目标目录
cp  -d ./dist/lib/lib*.so* ../../lib/linux/Debug/
# Windows下已经复制了头文件
# cp -r ./dist/include/sw/* ../../include/sw/
target_dir="../../include/sw/"
if [ -d "$target_dir" ] && [ "$(ls -A "$target_dir")" ]; then
    echo "Windows下已经复制了头文件，跳过复制。"
else
    mkdir -p "$target_dir"
    cp -r ./dist/include/sw/* "$target_dir"
    echo "完成复制头文件。"
fi
cd ..

# 编译linux Release版本
echo "编译linux Release版本..."
mkdir -p build_linux_r
cd build_linux_r
# rm -rf *
cmake -DCMAKE_BUILD_TYPE=Release -DREDIS_PLUS_PLUS_BUILD_TEST=OFF -DREDIS_PLUS_PLUS_BUILD_SHARED=ON -DCMAKE_INSTALL_PREFIX="./dist" -DCMAKE_CXX_FLAGS="-O3" -DHIREDIS_LIB=../../lib/linux/Release/libhiredis.so -DHIREDIS_HEADER=../../include ..
make -j$(nproc)
make install

# 复制编译产物到目标目录
cp  -d ./dist/lib/lib*.so* ../../lib/linux/Release/
cd ..

echo "redis++ Linux编译完成！"
echo "库文件路径:  ${PWD%/*}/lib/linux/{Debug,Release}"
echo "头文件路径:  ${PWD%/*}/include/sw"